#!/bin/bash
set -e

LAST_APPSEL_START=0

cmd_wm () {
    WIN="$(xdotool getactivewindow)"
    wmctrl -i -r ${WIN} -b remove,maximized_vert,maximized_horz
    xdotool windowsize ${WIN} 100% 100%
    wmctrl -i -r ${WIN} -b add,maximized_vert,maximized_horz
}

cmd_appsel_helper () {
    rofi -show window
}

_cmd_appsel () {
    wmctrl -x -a $1 || true
    xdotool key Escape
}

cmd_appsel_music () {
    wmctrl -x -a rhythmbox || wmctrl -x -a spotify || \
        wmctrl -x -a banshee || wmctrl -x -a kodi || \
        wmctrl -x -a plex || true
    xdotool key Escape
}

cmd_appsel_slack () {
    wmctrl -x -a slack || wmctrl -x -a Mstdn || true
    xdotool key Escape
}

cmd_appsel_emacs () {
    _cmd_appsel emacs
}

cmd_appsel_term () {
    _cmd_appsel gnome-terminal
}

cmd_appsel_chrome () {
    wmctrl -x -a chrom || wmctrl -x -a Chrome || true
    xdotool key Escape
}

cmd_appsel_start () {
    if [ ! -z "${DISABLE_APPSEL_START}" ]; then
        return
    fi

    APPSEL_START=$(date +%s)
    if [ $APPSEL_START -lt $(expr $LAST_APPSEL_START + 10) ]; then
        return
    fi
    LAST_APPSEL_START=$APPSEL_START
    notify-send -t 1000 "Please select an application!" -c device -u low \
                -i /usr/share/icons/Adwaita/24x24/devices/video-display.png
}

cmd_appsel_social () {
    # Save the current window
    a=$(xdotool getactivewindow)
    # Raise & Focus Mstdn & Tweetdeck
    wmctrl -x -a trunk.mad-scientist.club.Google-chrome || true; wmctrl -x -a tweetdeck || true
    # Focus the previously active window
    xdotool windowfocus $a || true; xdotool windowactivate $a || true

    xdotool key Escape
}

cmd_appsel_social2 () {
    # Save the current window
    a=$(xdotool getactivewindow)
    # Raise & Focus Viber & Signal
    wmctrl -x -a Viber || true; wmctrl -a Signal || true
    # Focus the previously active window
    xdotool windowfocus $a || true; xdotool windowactivate $a || true

    xdotool key Escape
}

cmd_appsel_pwmgr () {
    _cmd_appsel keepass
}

cmd_reflash () {
    teensy_loader_cli -v -w ~/src/ext/qmk_firmware/algernon.hex --mcu atmega32u4 || true
}

cmd_help () {
    cat <<EOF
Use the source, Luke!
EOF
}

while read l; do
    case "$l" in
        "CMD:"*)
            ;;
        *)
            continue
            ;;
    esac

    cmd="$(echo $l | cut -d: -f2-)"

    echo "Got command: ${cmd}"

    if type cmd_${cmd} >/dev/null 2>&1; then
        cmd_${cmd}
    fi
done
